package com.erp.erp_entitys.Purchase;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 
 * @date 2021-01-07
 */
public class Purchase {
    /**
     * 主键
     */
    private Integer id;

    /**
     * 采购单号
     */
    private String purchaseOrderNo;

    /**
     * 类型（1成品/2配件）
     */
    private String purchaseType;

    /**
     * 供应商编码
     */
    private String supplierCode;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 联系人
     */
    private String contactPerson;

    /**
     * 联系人邮箱
     */
    private String contactEmail;

    /**
     * 销售合同号
     */
    private String salesContractNo;

    /**
     * 签约公司ID
     */
    private Integer companyId;

    /**
     * 签约公司名称
     */
    private String companyName;

    /**
     * 签约公司编码
     */
    private String companyCode;

    /**
     * 签约日期
     */
    private Date signTime;

    /**
     * 银行
     */
    private String bank;

    /**
     * 交货日期
     */
    private Date deliverDate;

    /**
     * 交货地点
     */
    private String deliverAddress;

    /**
     * 币种
     */
    private String currency;

    /**
     * 人民币汇率
     */
    private BigDecimal rmbRate;

    /**
     * 美元汇率
     */
    private BigDecimal usdRate;

    /**
     * 采购总额（sum产品金额小计）
     */
    private BigDecimal purchaseTotalPrice;

    /**
     * 操作员编号
     */
    private String executorCode;

    /**
     * 操作员姓名
     */
    private String executorName;

    /**
     * 客户所属业务员编号（导入的外销或备货合同中的业务员）
     */
    private String salesmanCode;

    /**
     * 客户所属业务员姓名
     */
    private String salesmanName;

    /**
     * 备注
     */
    private String remark;

    /**
     * 序列号
     */
    private String sn;

    /**
     * 箱体状态
     */
    private String boxStatus;

    /**
     * 创建时间
     */
    private Date createTime;

    /**
     * 编辑时间
     */
    private Date editTime;

    /**
     * 备货期限（导入对应单据是对应单据的备货期限）
     */
    private Date leadTime;

    /**
     * 付款类型
     */
    private String paymentType;

    /**
     * 付款账期（供应商账期）
     */
    private String paymentTime;

    /**
     * 定金比例
     */
    private BigDecimal earnestRate;

    /**
     * 定金金额
     */
    private BigDecimal earnestMoney;

    /**
     * 已付款金额(资金管理-付款用) 未用字段
     */
    private BigDecimal amountPaid;

    /**
     * 申请合计(资金管理-付款用) 未用字段
     */
    private BigDecimal totalApplication;

    /**
     * 是否开票（1开票2不开票）
     */
    private String invoiceStatus;

    /**
     * 是否含税（1含税2不含税）
     */
    private String taxIncluded;

    private List<PurchaseProduct> productList;
    private List<PurchaseFile> fileList;

    /**
     * 审批流id
     */
    private String purchaseBpmId;
    /**
     * 审批流状态
     */
    private String purchaseBpmStatus;

    /**
     * 客户等级编码
     */
    private String customerLevelCode;

    /**
     * 客户等级名称
     */
    private String customerLevelName;

    /**
     * 有效性(0：无效 1：有效)
     */
    private Integer valid;

    /**
     * 操作类型（1：新增 2：删除 3：更新）
     */
    private Integer upType;

    /**
     * 操作人员
     */
    private String upUser;

    /**
     * 操作时间
     */
    private Date upTime;

    /**
     * 是否走信保订单(0:否 1:是)
     */
    private Integer whetherCreditGuarantee;

    /**
     * 信保订单金额USD
     */
    private BigDecimal creditGuaranteeAmount;

    /**
     * 是否补货(0:否 1:是)
     */
    private Integer whetherToReplenish;

    /**
     * 客诉单号(CAPA号)
     */
    private String customerComplaintNo;

    /**
     * 瓶底是否指定Logo(1:不指定，2：指定光面，3：指定客户Logo，4：指定Rtco Logo)
     */
    private Integer modeOfTrade;

    /**
     * 附件数量
     */
    private Integer fileSum;



    /**
     * 新单号
     */
    private String newBillNo;

    public String getNewBillNo() {
        return newBillNo;
    }

    public void setNewBillNo(String newBillNo) {
        this.newBillNo = newBillNo;
    }

    public Integer getFileSum() {
        return fileSum;
    }

    public void setFileSum(Integer fileSum) {
        this.fileSum = fileSum;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getPurchaseOrderNo() {
        return purchaseOrderNo;
    }

    public void setPurchaseOrderNo(String purchaseOrderNo) {
        this.purchaseOrderNo = purchaseOrderNo == null ? null : purchaseOrderNo.trim();
    }

    public String getPurchaseType() {
        return purchaseType;
    }

    public void setPurchaseType(String purchaseType) {
        this.purchaseType = purchaseType == null ? null : purchaseType.trim();
    }

    public String getSupplierCode() {
        return supplierCode;
    }

    public void setSupplierCode(String supplierCode) {
        this.supplierCode = supplierCode;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName == null ? null : supplierName.trim();
    }

    public String getContactPerson() {
        return contactPerson;
    }

    public void setContactPerson(String contactPerson) {
        this.contactPerson = contactPerson == null ? null : contactPerson.trim();
    }

    public String getContactEmail() {
        return contactEmail;
    }

    public void setContactEmail(String contactEmail) {
        this.contactEmail = contactEmail == null ? null : contactEmail.trim();
    }

    public String getSalesContractNo() {
        return salesContractNo;
    }

    public void setSalesContractNo(String salesContractNo) {
        this.salesContractNo = salesContractNo == null ? null : salesContractNo.trim();
    }

    public Integer getCompanyId() {
        return companyId;
    }

    public void setCompanyId(Integer companyId) {
        this.companyId = companyId;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName == null ? null : companyName.trim();
    }

    public String getCompanyCode() {
        return companyCode;
    }

    public void setCompanyCode(String companyCode) {
        this.companyCode = companyCode == null ? null : companyCode.trim();
    }

    public Date getSignTime() {
        return signTime;
    }

    public void setSignTime(Date signTime) {
        this.signTime = signTime;
    }

    public String getBank() {
        return bank;
    }

    public void setBank(String bank) {
        this.bank = bank;
    }

    public Date getDeliverDate() {
        return deliverDate;
    }

    public void setDeliverDate(Date deliverDate) {
        this.deliverDate = deliverDate;
    }

    public String getDeliverAddress() {
        return deliverAddress;
    }

    public void setDeliverAddress(String deliverAddress) {
        this.deliverAddress = deliverAddress == null ? null : deliverAddress.trim();
    }

    public String getCurrency() {
        return currency;
    }

    public void setCurrency(String currency) {
        this.currency = currency == null ? null : currency.trim();
    }

    public BigDecimal getRmbRate() {
        return rmbRate;
    }

    public void setRmbRate(BigDecimal rmbRate) {
        this.rmbRate = rmbRate;
    }

    public BigDecimal getUsdRate() {
        return usdRate;
    }

    public void setUsdRate(BigDecimal usdRate) {
        this.usdRate = usdRate;
    }

    public BigDecimal getPurchaseTotalPrice() {
        return purchaseTotalPrice;
    }

    public void setPurchaseTotalPrice(BigDecimal purchaseTotalPrice) {
        this.purchaseTotalPrice = purchaseTotalPrice;
    }

    public String getExecutorCode() {
        return executorCode;
    }

    public void setExecutorCode(String executorCode) {
        this.executorCode = executorCode == null ? null : executorCode.trim();
    }

    public String getExecutorName() {
        return executorName;
    }

    public void setExecutorName(String executorName) {
        this.executorName = executorName == null ? null : executorName.trim();
    }

    public String getSalesmanCode() {
        return salesmanCode;
    }

    public void setSalesmanCode(String salesmanCode) {
        this.salesmanCode = salesmanCode == null ? null : salesmanCode.trim();
    }

    public String getSalesmanName() {
        return salesmanName;
    }

    public void setSalesmanName(String salesmanName) {
        this.salesmanName = salesmanName == null ? null : salesmanName.trim();
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark == null ? null : remark.trim();
    }

    public String getSn() {
        return sn;
    }

    public void setSn(String sn) {
        this.sn = sn == null ? null : sn.trim();
    }

    public String getBoxStatus() {
        return boxStatus;
    }

    public void setBoxStatus(String boxStatus) {
        this.boxStatus = boxStatus == null ? null : boxStatus.trim();
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getEditTime() {
        return editTime;
    }

    public void setEditTime(Date editTime) {
        this.editTime = editTime;
    }

    public Date getLeadTime() {
        return leadTime;
    }

    public void setLeadTime(Date leadTime) {
        this.leadTime = leadTime;
    }

    public String getPaymentType() {
        return paymentType;
    }

    public void setPaymentType(String paymentType) {
        this.paymentType = paymentType == null ? null : paymentType.trim();
    }

    public String getPaymentTime() {
        return paymentTime;
    }

    public void setPaymentTime(String paymentTime) {
        this.paymentTime = paymentTime == null ? null : paymentTime.trim();
    }

    public BigDecimal getEarnestRate() {
        return earnestRate;
    }

    public void setEarnestRate(BigDecimal earnestRate) {
        this.earnestRate = earnestRate;
    }

    public BigDecimal getEarnestMoney() {
        return earnestMoney;
    }

    public void setEarnestMoney(BigDecimal earnestMoney) {
        this.earnestMoney = earnestMoney;
    }

    public BigDecimal getAmountPaid() {
        return amountPaid;
    }

    public void setAmountPaid(BigDecimal amountPaid) {
        this.amountPaid = amountPaid;
    }

    public BigDecimal getTotalApplication() {
        return totalApplication;
    }

    public void setTotalApplication(BigDecimal totalApplication) {
        this.totalApplication = totalApplication;
    }

    public String getInvoiceStatus() {
        return invoiceStatus;
    }

    public void setInvoiceStatus(String invoiceStatus) {
        this.invoiceStatus = invoiceStatus == null ? null : invoiceStatus.trim();
    }

    public String getTaxIncluded() {
        return taxIncluded;
    }

    public void setTaxIncluded(String taxIncluded) {
        this.taxIncluded = taxIncluded == null ? null : taxIncluded.trim();
    }

    public List<PurchaseProduct> getProductList() {
        return productList;
    }

    public void setProductList(List<PurchaseProduct> productList) {
        this.productList = productList;
    }

    public List<PurchaseFile> getFileList() {
        return fileList;
    }

    public void setFileList(List<PurchaseFile> fileList) {
        this.fileList = fileList;
    }

    public String getPurchaseBpmId() {
        return purchaseBpmId;
    }

    public void setPurchaseBpmId(String purchaseBpmId) {
        this.purchaseBpmId = purchaseBpmId;
    }

    public String getPurchaseBpmStatus() {
        return purchaseBpmStatus;
    }

    public void setPurchaseBpmStatus(String purchaseBpmStatus) {
        this.purchaseBpmStatus = purchaseBpmStatus;
    }

    public String getCustomerLevelCode() {
        return customerLevelCode;
    }

    public void setCustomerLevelCode(String customerLevelCode) {
        this.customerLevelCode = customerLevelCode;
    }

    public String getCustomerLevelName() {
        return customerLevelName;
    }

    public void setCustomerLevelName(String customerLevelName) {
        this.customerLevelName = customerLevelName;
    }

    public Integer getValid() {
        return valid;
    }

    public void setValid(Integer valid) {
        this.valid = valid;
    }

    public Integer getUpType() {
        return upType;
    }

    public void setUpType(Integer upType) {
        this.upType = upType;
    }

    public String getUpUser() {
        return upUser;
    }

    public void setUpUser(String upUser) {
        this.upUser = upUser;
    }

    public Date getUpTime() {
        return upTime;
    }

    public void setUpTime(Date upTime) {
        this.upTime = upTime;
    }

    public Integer getWhetherCreditGuarantee() {
        return whetherCreditGuarantee;
    }

    public void setWhetherCreditGuarantee(Integer whetherCreditGuarantee) {
        this.whetherCreditGuarantee = whetherCreditGuarantee;
    }

    public BigDecimal getCreditGuaranteeAmount() {
        return creditGuaranteeAmount;
    }

    public void setCreditGuaranteeAmount(BigDecimal creditGuaranteeAmount) {
        this.creditGuaranteeAmount = creditGuaranteeAmount;
    }

    public Integer getModeOfTrade() {
        return modeOfTrade;
    }

    public void setModeOfTrade(Integer modeOfTrade) {
        this.modeOfTrade = modeOfTrade;
    }

    public Integer getWhetherToReplenish() {
        return whetherToReplenish;
    }

    public void setWhetherToReplenish(Integer whetherToReplenish) {
        this.whetherToReplenish = whetherToReplenish;
    }

    public String getCustomerComplaintNo() {
        return customerComplaintNo;
    }

    public void setCustomerComplaintNo(String customerComplaintNo) {
        this.customerComplaintNo = customerComplaintNo;
    }


    /**
     * 重写toString
     */
    @Override
    public String toString() {
        final StringBuilder sb = new StringBuilder("Purchase").append('[')
                .append("id=")
                .append(id)
                .append(",purchaseOrderNo=")
                .append(purchaseOrderNo)
                .append(",purchaseType=")
                .append(purchaseType)
                .append(",supplierCode=")
                .append(supplierCode)
                .append(",supplierName=")
                .append(supplierName)
                .append(",contactPerson=")
                .append(contactPerson)
                .append(",contactEmail=")
                .append(contactEmail)
                .append(",salesContractNo=")
                .append(salesContractNo)
                .append(",companyId=")
                .append(companyId)
                .append(",companyName=")
                .append(companyName)
                .append(",companyCode=")
                .append(companyCode)
                .append(",signTime=")
                .append(signTime)
                .append(",bank=")
                .append(bank)
                .append(",deliverDate=")
                .append(deliverDate)
                .append(",deliverAddress=")
                .append(deliverAddress)
                .append(",currency=")
                .append(currency)
                .append(",rmbRate=")
                .append(rmbRate)
                .append(",usdRate=")
                .append(usdRate)
                .append(",purchaseTotalPrice=")
                .append(purchaseTotalPrice)
                .append(",executorCode=")
                .append(executorCode)
                .append(",executorName=")
                .append(executorName)
                .append(",salesmanCode=")
                .append(salesmanCode)
                .append(",salesmanName=")
                .append(salesmanName)
                .append(",remark=")
                .append(remark)
                .append(",sn=")
                .append(sn)
                .append(",boxStatus=")
                .append(boxStatus)
                .append(",createTime=")
                .append(createTime)
                .append(",editTime=")
                .append(editTime)
                .append(",leadTime=")
                .append(leadTime)
                .append(",paymentType=")
                .append(paymentType)
                .append(",paymentTime=")
                .append(paymentTime)
                .append(",earnestRate=")
                .append(earnestRate)
                .append(",earnestMoney=")
                .append(earnestMoney)
                .append(",amountPaid=")
                .append(amountPaid)
                .append(",totalApplication=")
                .append(totalApplication)
                .append(",invoiceStatus=")
                .append(invoiceStatus)
                .append(",taxIncluded=")
                .append(taxIncluded)
                .append(",productList=")
                .append(productList)
                .append(",fileList=")
                .append(fileList)
                .append(",purchaseBpmId=")
                .append(purchaseBpmId)
                .append(",purchaseBpmStatus=")
                .append(purchaseBpmStatus)
                .append(",customerLevelCode=")
                .append(customerLevelCode)
                .append(",customerLevelName=")
                .append(customerLevelName)
                .append(",valid=")
                .append(valid)
                .append(",upType=")
                .append(upType)
                .append(",upUser=")
                .append(upUser)
                .append(",upTime=")
                .append(upTime)
                .append(",whetherCreditGuarantee=")
                .append(whetherCreditGuarantee)
                .append(",creditGuaranteeAmount=")
                .append(creditGuaranteeAmount)
                .append(",whetherToReplenish=")
                .append(whetherToReplenish)
                .append(",customerComplaintNo=")
                .append(customerComplaintNo)
                .append(",modeOfTrade=")
                .append(modeOfTrade)
                .append(",fileSum=")
                .append(fileSum)
                .append(']');
        return sb.toString();
    }
}